import wechatAuth from @/utils/wechat'

/**
 * 微信授权使用示例
 * 这个文件展示了如何在项目中使用微信授权功能
 */

/**
 * 示例1：简单的微信登录
 */
export async function simpleWechatLogin() {
  try {
    console.log('开始微信登录...')
    
    // 调用微信登录
    const result = await wechatAuth.login()
    
    if (result.success) {
      console.log('微信登录成功！')
      console.log('用户信息:', result.wechatInfo)
      console.log('登录数据:', result.data)
      
      return result
    } else {
      throw new Error('微信登录失败')
    }
  } catch (error) {
    console.error('微信登录错误:', error)
    throw error
  }
}

/**
 * 示例2：检查登录状态并获取用户信息
 */
export function checkAndGetUserInfo() {
  // 检查登录状态
  const status = wechatAuth.checkLoginStatus()
  
  if (status.isLoggedIn) {
    console.log('用户已登录')
    console.log('Token:', status.token)
    console.log('用户信息:', status.userInfo)
    console.log('微信信息:', status.wechatInfo)
    
    return {
      isLoggedIn: true,
      userInfo: status.userInfo,
      wechatInfo: status.wechatInfo
    }
  } else {
    console.log('用户未登录')
    return {
      isLoggedIn: false,
      userInfo: null,
      wechatInfo: null
    }
  }
}

/**
 * 示例3：获取微信授权信息但不登录
 */
export async function getWechatAuthOnly() {
  try {
    console.log('获取微信授权信息...')
    
    // 只获取授权信息，不进行登录
    const authData = await wechatAuth.getAuth()
    
    console.log('微信授权信息:', authData)
    
    return authData
  } catch (error) {
    console.error('获取微信授权信息失败:', error)
    throw error
  }
}

/**
 * 示例4：在页面中使用微信授权
 */
export function useWechatAuthInPage() {
  return {
    data() {
      return {
        isLoggedIn: false,
        userInfo: null,
        wechatInfo: null,
        isLoading: false
      }
    },
    
    onLoad() {
      // 页面加载时检查登录状态
      this.checkLoginStatus()
    },
    
    methods: {
      // 检查登录状态
      checkLoginStatus() {
        const status = wechatAuth.checkLoginStatus()
        this.isLoggedIn = status.isLoggedIn
        
        if (this.isLoggedIn) {
          const userData = wechatAuth.getCurrentUserInfo()
          this.userInfo = userData.userInfo
          this.wechatInfo = userData.wechatInfo
        }
      },
      
      // 微信登录
      async handleWechatLogin() {
        try {
          this.isLoading = true
          
          const result = await wechatAuth.login()
          
          if (result.success) {
            this.isLoggedIn = true
            this.userInfo = result.data
            this.wechatInfo = result.wechatInfo
            
            uni.showToast({
              title: '微信登录成功',
              icon: 'success'
            })
            
            // 登录成功后的处理逻辑
            this.onLoginSuccess(result)
          } else {
            throw new Error('微信登录失败')
          }
        } catch (error) {
          console.error('微信登录错误:', error)
          uni.showToast({
            title: error.message || '微信登录失败',
            icon: 'none'
          })
        } finally {
          this.isLoading = false
        }
      },
      
      // 退出登录
      handleLogout() {
        uni.showModal({
          title: '确认退出',
          content: '确定要退出登录吗？',
          success: (res) => {
            if (res.confirm) {
              const success = wechatAuth.logout()
              if (success) {
                this.isLoggedIn = false
                this.userInfo = null
                this.wechatInfo = null
                
                uni.showToast({
                  title: '已退出登录',
                  icon: 'success'
                })
                
                // 退出登录后的处理逻辑
                this.onLogoutSuccess()
              }
            }
          }
        })
      },
      
      // 登录成功回调（可重写）
      onLoginSuccess(result) {
        console.log('登录成功:', result)
        // 可以在这里添加登录成功后的业务逻辑
      },
      
      // 退出登录回调（可重写）
      onLogoutSuccess() {
        console.log('退出登录成功')
        // 可以在这里添加退出登录后的业务逻辑
      }
    }
  }
}

/**
 * 示例5：在组件中使用微信授权
 */
export function useWechatAuthInComponent() {
  return {
    props: {
      // 组件属性
      autoCheck: {
        type: Boolean,
        default: true
      }
    },
    
    data() {
      return {
        isLoggedIn: false,
        userInfo: null
      }
    },
    
    mounted() {
      if (this.autoCheck) {
        this.checkLoginStatus()
      }
    },
    
    methods: {
      checkLoginStatus() {
        const status = wechatAuth.checkLoginStatus()
        this.isLoggedIn = status.isLoggedIn
        this.userInfo = status.userInfo
      },
      
      async login() {
        try {
          const result = await wechatAuth.login()
          if (result.success) {
            this.isLoggedIn = true
            this.userInfo = result.data
            this.$emit('login-success', result)
          }
          return result
        } catch (error) {
          this.$emit('login-error', error)
          throw error
        }
      },
      
      logout() {
        const success = wechatAuth.logout()
        if (success) {
          this.isLoggedIn = false
          this.userInfo = null
          this.$emit('logout-success')
        }
        return success
      }
    }
  }
}

/**
 * 示例6：获取微信用户详细信息
 */
export function getWechatUserDetails() {
  const userData = wechatAuth.getCurrentUserInfo()
  
  if (userData.wechatInfo && userData.wechatInfo.userInfo) {
    const userInfo = userData.wechatInfo.userInfo
    
    return {
      nickname: userInfo.nickName || '未知',
      avatar: userInfo.avatarUrl || '',
      gender: userInfo.gender === 1 ? '男' : userInfo.gender === 2 ? '女' : '未知',
      country: userInfo.country || '',
      province: userInfo.province || '',
      city: userInfo.city || '',
      language: userInfo.language || '',
      openid: userData.wechatInfo.openid || '',
      unionid: userData.wechatInfo.unionid || ''
    }
  }
  
  return null
}

// 导出微信授权工具实例，方便直接使用
export { wechatAuth } 